Network Coding, NC, is an area of networking which recently has gained interest. Network Coding concerns manipulation of data at one or more nodes intermediate to a sending node and a receiving node within a network, to improve, for example, throughput, delay, and robustness. In particular, NC allows the nodes to recombine several input packets of data into one or several output packets. At the intermediate nodes, linear coding is performed on the available packets, and the resulting encoded packets are broadcasted to separate receiving nodes simultaneously rather than transmitting to each node separately.
A major application area of network coding is bidirectional relaying. Bidirectional relaying refers to the case where two end-users, here denoted U1 and U2 have data, here denoted s1 and s2, respectively, want to exchange their information via a third node R, which plays the role of a relaying node.
In general, network coding applied to bidirectional relaying in systems is referred to as coded bidirectional relaying.
In order to exchange data between two end-users U1 and U2 connected to a third node, a total of 4 transmissions is needed when applying conventional bidirectional relaying to complete the data exchange.
The first transmission transfers data s1 from end-node U1 to R. The second transmission forwards data s1 from R to end-node U2. The third transmission transfers data s2 from end-node U2 to node R, and the fourth transmission forwards data s2 from node R to end-node U1.
If applying coded bidirectional relaying in network coding of data between two end-nodes connected by a third node R, it is sufficient with a total of 3 transmissions in order to complete the data exchange.
Bidirectional relaying may be performed on data bits by using bit-level network coding, or on complex data by using multi-domain network coding on the symbol level. Depending on whether bit-level or multi-domain network coding is performed, different processing at, at least one of the nodes will have to be carried out, as described hereinafter.
By applying bit-level network coding end-node U1 transmits data s1 to node R and end-node U2 transmits data s2 to node R. At node R data s3 is formed according to s3=s1 XOR s2, where XOR is a bitwise XOR operation. Node R then transmits data s3 to end-node U1 and U2. End-node U1 already knowing data s1, now performs network decoding of data s3 and calculates s1 XOR s3=s1 XOR (s1 XOR s2)=(s1 XOR s1) XOR s2=0 XOR s2=s2. End-node U2 similarly calculates s2 XOR (s2 XOR s1)=(s2 XOR s2) XOR s1=s1. End-nodes U1 and U2 have thus obtained exchanged data from a total of three transmissions. The network decoding step here undoes the network coding.
Of course, XOR is not the only network coding possible, but other types of coding may be used instead. The most important is that these codes have the property that if we have data s1 and a combination of data s1 and data s2, we obtain data s2, or if we have data s2 and a combination of data s1 and data s2, we obtain data s1.
Whereas bit-level network coding operates on bits, multi-domain network coding operates on symbols that are complex in nature. Transmission using multi-domain network coding resembles transmission on the bit-level. In fact the first steps are the same. Firstly, data s1 is transmitted from end-node U1 to node R. Secondly, data s2 is transmitted from end-node U2 to node R. At node R multi-domain network coded data s3 is created based on received data s1 and data s2. The created network coded data s3 is then transmitted to both end-nodes U1 and U2. At end-nodes U1 and U2 the coded data s3 can be network decoded by using a priori known data s1 or data s2, revealing data s2 or data s1, respectively.
Compared to bit-level network coding, multi-domain network coding is performed on the symbol of modulated information. Multi-domain network coding has an advantage compared to bit-level network coding in that symbols that are coded together may have different modulations, where each modulation is suited to the link on which they will be transmitted.
In summary, using coded bidirectional relaying requires a total of three transmissions to perform the data exchange as opposed to the four transmissions as required by conventional bidirectional relaying. One transmission out of four transmissions is therefore saved. This results in a capacity gain of up to 4/3, apart from the fact that only one transmission has to be performed by the node R to transmit data that represents data s1 and data s2.
In the case node R is a base station, and the end-nodes are User Equipments, the base station is only required to transmit once instead of two times, and therefore saves half the power needed to transmit data, as compared to conventional data transmission.
There are however drawbacks with prior art bidirectional network coding as will be pointed out down below.
Consider the communication system of two end-users U1 and U2 connected to each other via the node R. FIG. 1 schematically illustrates such a system.
Denote the Up-link channel between end-user U1 102 and node R 104, the U1 Up-link channel or U1 UL. Also, denote the Up-link channel between end-user U2 106 and node R 104, the U2 Up-link channel or U2 UL. Similarly, denote the Down-link channel between node R 104 and end-user U1 102, U1 Down-link channel or U1 DL. In addition, denote the Down-link channel between node R 104 and end-user U2 106, U2 Down-link channel or U2 DL.
The data of U1 102 will thus have to be transmitted using the U1 UL channel and the U2 DL channel. Similarly, the data of U2 106 will have to be transmitted using the U2 UL channel and the U1 DL channel.
The two Up-Link channels and the two Down-Link channels are typically different, and will consequently allow carrying different amounts of information.
Variations and/or differences between channel qualities of separate links can significantly affect systems employing network coding.
In the following examples limitations and hence the disadvantages of prior art techniques will be described.